package com.gdface.admin.gdface_attend.service;

/**
 * Created by admin on 2018/04/03.
 */

//public class RegisterDevice {
//
//    public static final String host = "127.0.0.1";
//    public static final String mac = "a02c36ca8f1c";
//    public static final String serial = "141050368524601c018e";
//    public static final String version = "6.0.1";
//
//    private static IFaceLogClient facelogClient;
//
//    private void testRegister() {
//
//        Token token = null;


//
//        //注册
//        try {
//            //获取IFaceLogClient 对象
//            faceClient = ClientFactory.builder().setHostAndPort(host, CommonConstant.DEFAULT_PORT).build();
//            DeviceBean deviceBean = DeviceBean.builder().name("测试虚拟设备1").mac(mac).version(version).build();
//            //注册设备 返回设备bean
//            deviceBean = faceClient.registerDevice(deviceBean);
//            System.out.println("deviceBean : "+deviceBean.toString());
//
//            //申请设备token
//            token = faceClient.online(deviceBean);
//            System.out.println("token : "+token);
//
//            //获取redis服务器访问基本参数
//            Map<MQParam, String> redisParams = faceClient.getRedisParameters(token);
//            //通过redisURI地址获取JedisPoolLazy对象，并将此对象设置为default
//            JedisPoolLazy.getInstance(redisParams.get(MQParam.REDIS_URI)).asDefaultInstance();
//            //设备命令执行容器初始化，同时将需要不同需求的Adapter注册添加进去
//            CommandAdapterContainer container = new CommandAdapterContainer();
//            container.register(Cmd.enable, new CommandAdapter());
//            container.register(Cmd.reset, new CommandAdapter());
//            //根据设备ID返回一个获取设备组ID的Supplier实例
//            Supplier<Integer> supplier = faceClient.getDeviceGroupIdSupplier(deviceBean.getId());
//            //将设备命令执行容器set进设备命令分发器中，并初始化设备命令分发器
//            CmdDispatcher dispatcher = new CmdDispatcher(
//                    deviceBean.getId(),
//                    supplier).setCmdAdapter(container);
//            //
//            Channel<DeviceInstruction> cmdChannel =
//                    new Channel<DeviceInstruction>(redisParams.get(MQParam.CMD_CHANNEL)){}
//                            .setAdapter(dispatcher);
//            RedisFactory.getSubscriber().register(cmdChannel);
//
//            //实现固定订阅频道消息接收
//            new SubAdapters.BasePersonInsertSubAdapter(){
//
//                @Override
//                public void onSubscribe(Integer id)
//                        throws SmqUnsubscribeException {
//                    // TODO Auto-generated method stub
//                    logger.info("person insert id : "+id);
//                }}.register(RedisFactory.getSubscriber());
//
//            new SubAdapters.BasePermitInsertSubAdapter(){
//
//                @Override
//                public void onSubscribe(PermitBean permit)
//                        throws SmqUnsubscribeException {
//                    logger.info(permit.toString());
//                }}.register(RedisFactory.getSubscriber());
//
//        } catch (ServiceSecurityException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }catch (ServiceRuntimeException e) {
//            logger.error(e.getServiceStackTraceMessage());
//        }


//        try {
//            // 获取当前设备的MAC地址(假设只有一块网卡)
//            byte[] address = NetworkUtil.getPhysicalNICs().iterator().next().getHardwareAddress();
//
//            //获取IFaceLogClient 对象
//            facelogClient = ClientFactory.builder().setHostAndPort(host, CommonConstant.DEFAULT_PORT).build();
//
//
//            // 根据MAC地址和设备序列号构造一个DeviceBean数据对象
//            DeviceBean device = DeviceBean.builder()
//                    .mac(NetworkUtil.formatMac(address, null)) // 设备当前设备MAC地址
////                    .serialNo("12322333") // 设置设备序列号
////                    .build();
//            logger.info(device.toString(true, false));
//            // 设备注册
//            device = facelogClient.registerDevice(device);
//            // 申请设备令牌
//            Token deviceToken = facelogClient.online(device);
//            // .....
//
//            // 应用结束时通知facelog servcie设备下线，释放设备令牌
//            facelogClient.offline(deviceToken);
//
//            // 设备注销，设备从 facelog系统删除时调用
//            facelogClient.unregisterDevice(device.getId(), deviceToken);
//        } catch (SocketException e) {
//            e.printStackTrace();
//        } catch (ServiceRuntimeException e) {
//            e.printServiceStackTrace();
//            assertTrue(e.getMessage(), false);
//        } catch (ServiceSecurityException e) {
//            logger.error(e.getMessage());
//            assertTrue(e.getServiceStackTraceMessage(), false);
//        }
//
//    }
//}
